[追加500分求教] VB操作WORD问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:22:32
说明,用VB操作WORD,以下源码第一次操作完全正常,正常打开,正常替换,正常退出。进程中并没有留下windword的进程,但第二次继续操作时就出问题,运行到ReplaceWord()就出现462错误,关闭程序重新开始又正常。请指教出错及解决原因,追加到500分

'=============打开word==============

Function OpenWord(FileName) '打开指定word文档
Dim wordApp As New Word.Application
Dim wordDoc As New Word.Document
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = False
Set wordDoc = wordApp.Documents.Open(FileName)
End Function

============替换关键字===========
Function ReplaceWord(SearchStr, ReplaceStr) '全部替换函数
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = SearchStr
.Replacement.Text = ReplaceStr
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.Matc

1) Function ReplaceWord(SearchStr, ReplaceStr) '全部替换函数
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.......
这个函数过程有错误!因为Selection是word的对象而不是VB的对象,所以不能在VB中直接引用,必须用wordApp.Selection替换掉Selection才行!
这段代码在word VBA中调试不会出问题,但移植到VB中时要注意。

2)wordApp和wordDoc必须定义为全局变量,在模块公有部分使用
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
来定义
然后在OpenWord(FileName)过程中使用Set wordApp =New Word.Application
和Set wordDoc = wordApp.Documents.Open(FileName),否则在CloseWord()过程中wordApp和wordDoc两个变量将会是未初始化的Variant类型。

3)Function SaveAsWord(DiskStr, NameStr)中的Application须使用wordApp替换,道理同1)。

有可能是本机的COM配置错误。因为WORD是ActiveEXE,使用这个对象时,本机的COM配置一定要允许使用才可以。用 DCOMCNFG.EXE 看看吧。运行DCOMCNFG.EXE
组件服务--控制台根目录--组件服务--计算机--我的电脑--COM+应用程序
以下五个项目都启动
Com+ Explorer
Com+ QC Dead Letter Queue Listener
Com+ Ytilities
MS